package com.sgj.principle.inversion;

/**
 * 依赖倒转原则
 * @Author: Guoji Shen
 * @Date: 2021/11/9 9:30
 */
public class DependecyInversion {
    public static void main(String[] args) {
        Person person = new Person();
        person.receive(new Email());
    }
}

/**
 * 完成 Person 接收消息的功能
 * 方式一完成, 分析
 * 1、比较简单
 * 2、如果获取对象是微信，短信，需要新增类，同时Person也需要增加相应方法接收
 * 3、解决思路：引入一个抽象接口IReceiver，表示接收者，这样Person类与接口IReceiver发生依赖
 */
class Person {
    public void receive (Email email) {
        System.out.println(email.getInfo());
    }
}

class Email {
    public String getInfo() {
        return "电子邮件信息: hello, world";
    }
}